1. Field of the Invention
The present invention is directed to technology for providing content via an Internet interface, and particularly to providing efficient data interpretation in code providing such content.
2. Description of the Related Art
The Internet has become a means to deliver more than communication to users. Currently, developers are striving to provide rich, powerful applications and content using the Internet. These applications have grown in sophistication. Earlier methods provided dynamic user interactions by downloading compliable and/or statically pre-compiled byte code directly to the client.
For example, Javascript code is often downloaded directly to the browser. The browser then interprets the code directly. This approach is limited because Javascript is typically not portable (different browsers offer differing support for the language) and the differences between browser Javascript API's severely limit the interactions that can be specified by the programmer. Alternatively, Java applets can be downloaded to a browser when a user accesses a web page. The Java source code for the applet is fixed, written in advance, and pre-compiled into an applet. When the user accesses the page, the applet is downloaded into the browser and the bytecode is interpreted (or compiled into machine code by a JIT compiler). One of several shortcomings of this approach is that Java is not sufficiently prevalent on all types of clients. That is, not all clients have the ability to interpret (or JIT compile) Java bytecode. Another shortcoming is that applets can be quite large to download and slow to run. Furthermore, creating Java applets is a complicated processes. Many web designers are not able or do not have the resources to take advantage of Java applets. Finally, because the code is written and compiled in advance, it is not dynamic.
An alternative to these attempts is provided in co-pending U.S. patent application Ser. No. 10/092,010 entitled “Presentation Server,” filed Mar. 5, 2002 and application Ser. No. 10/092,360 entitled “Interface Engine Providing A Continuous User Interface,” filed Mar. 5, 2002, both such applications are specifically incorporated herein by reference. These applications describe a system for providing rich Internet applications based on a presentation rendering system, and a unique user interface architecture, respectively.
In the aforesaid applications, underlying data is used by the rendering engine to present the application content to the user. The data source can be any number of suitable sources, such as a relational database, directory, other type of data structure. Because the number and type of applications which use data on the Internet, one standard for presenting data which has become widely popular is the Extensible Markup Language or XML. XML is a flexible way to create common information formats and share both the format and the data on the World Wide Web, intranets, and elsewhere. Because of the popularity of XML, it is possible to retrieve data from a number of different sources in this format. However, one must still interpret the data and provide a mechanism for extracting elements from the data. Conventionally, this is done by providing a query script which searches the XML data for elements needed for presentation in the application. In one example, this may occur through a series of “for” loops, which search for hierarchical data within the XML data file. However, this process is cumbersome to implement, both from a programming perspective and can make the code bulky and inefficient.
Another means for dealing with data in an XML document is Xpath. XPath is a language that describes a way to locate and process items in XML documents by using an addressing syntax based on a path through the document's logical structure or hierarchy. XPath also allows the programmer to deal with the document at a higher level of abstraction. XPath is a language that is used by and specified as part of both the Extensible Stylesheet Language Transformations (XSLT) and by XPointer (SML Pointer Language). It uses the information abstraction defined in the XML Information Set (Infoset). XPath specifies a route, rather than pointing to a specific set or sequence of characters, words, or other elements.
XPath uses the concepts of the concept node (the point from which the path address begins), the logical tree that is inherent in any XML document, and the concepts expressing logical relationships that are defined in the XML Information Set, such as ancestor, attribute, child, parent, and self. XPath includes a small set of expressions for specifying mathematics functions and the ability to be extended with other functions. While Xpath defines a standard for accessing documents, it does not define what one does with such data.
Other means have been provided which allow presentation of XML documents on the web. XSL Transformations (XSLT) is a standard way to describe how to transform (change) the structure of an XML (Extensible Markup Language) document into an XML document with a different structure. XSLT is a Recommendation of the World Wide Web Consortium (W3C). XSLT can be thought of as an extension of the Extensible Stylesheet Language (XSL). XSL is a language for formatting an XML document (for example, showing how the data described in the XML document should be presented in a Web page). XSLT shows how the XML document should be reorganized into another data structure (which could then be presented by following an XSL style sheet).
XSLT is used to describe how to transform the source tree or data structure of an XML document into the result tree for a new XML document, which can be completely different in structure. The coding for the XSLT is also referred to as a style sheet and can be combined with an XSL style sheet or be used independently.
In addition, the use of a resource file or data structure that specifies the layout of views within a window for display in a user interface has been known since developed by Apple Computer in the early 1980s. In the Macintosh Operating system, for example, a resource is stored on the local disk volume and divided into two forks, the data fork and the resource fork. The data fork contains data that usually corresponds to data created by the user; the application creating the file can store and interpret the data in the data fork in whatever manner is appropriate. The resource fork of a file consists of a resource map and the resources themselves. In this context, a resource is any data stored according to a defined structure in the resource fork of a file; the data in a resource is interpreted according to its resource type. Resources data typically has a defined structure—such as icons and sounds—and descriptions of menus, controls, dialog boxes, and windows. See, for example, the electronic book “Macintosh Toolbox Essentials” http://developer.apple.com/documentation/mac/Toolbox/Toolbox-2.html.
Nevertheless, there are no complete solutions today that provide complex, feature rich dynamic interactions in a client-server environment, and provide a mechanism for efficiently incorporating data from a multitude of sources into the dynamic interaction.